--======================================================================--
-- @作者: GGE研究群: 342119466
-- @创建时间:   2018-03-03 02:34:19
-- @Last Modified time: 2020-05-28 19:17:34
-- 梦幻西游游戏资源破解 baidwwy@vip.qq.com(313738139) 老毕   和 C++PrimerPlus 717535046 这俩位大神破解所以资源
--======================================================================--
local 场景类_对话商业栏 = class()
local format = string.format
local insert = table.insert
local ceil = math.ceil
local floor = math.floor
local wps = 取物品数据
local typ = type
local 五行_ = {"金","木","水","火","土"}
function 场景类_对话商业栏:初始化() end

function 场景类_对话商业栏:购买商品(连接id,id,序号,内容)
  self.商品匹配=false
  if type(玩家数据[id].商品列表)~="table" then
    异常账号(id,"未触发商品界面却触发购买请求。请求购买的商品数据为："..内容.商品)
    return 0
  else
    self.组合商品=""
    for n=1,#玩家数据[id].商品列表 do
      self.组合商品=self.组合商品..玩家数据[id].商品列表[n]
      if 玩家数据[id].商品列表[n]==内容.商品 then
        self.商品匹配=true
      end
    end
    if self.商品匹配==false then
      异常账号(id,"所购买的商品不再列表之类。商品列表为"..self.组合商品.."购买商品为"..内容.商品)
      return 0
    end
  end
  if 内容.数量==nil then
    内容.数量=""
  end
  if type(内容.数量)~="number" or 内容.数量<=0 or 内容.数量>99 then
    异常账号(id,"所购买的商品数量异常，提交的商品数量为"..内容.数量)
    return 0
  end
  --先获取一次格子
  local 道具格子=玩家数据[id].角色:取道具格子() ----
  if 道具格子==0 then
    常规提示(id,"您的道具栏物品已经满啦")
    return 0
  end
  local 商品分割=分割文本(内容.商品,"*")
  local 商品名称=商品分割[1]
  local 商品单价=商品分割[2]
  local 商品数量=内容.数量
  local 商品道具=物品类()
  local 道具格子=0
  商品道具:置对象(商品名称)
  local 成功数量=0
  --先计算是否可重叠
  if 商品道具.可叠加 == nil or 商品道具.可叠加 == false then

  else
    local 总价格=商品数量*商品单价
    道具格子=玩家数据[id].角色:取道具格子()
    if 道具格子==0 then
      常规提示(id,"您的道具栏物品已经满啦")
      return 0
    end
    if 商品道具.总类 == "跑商商品" then
        for i=1,20 do
            self.临时id = 玩家数据[id].角色.数据.道具[i]
            if 玩家数据[id].道具.数据[self.临时id] ~= nil then
                if 玩家数据[id].道具.数据[self.临时id].名称 == "帮派银票" then
                    if 玩家数据[id].道具.数据[self.临时id].初始金额 < 总价格 then
                        常规提示(id,"您身上的帮派银票似乎不够哟")
                        return 0
                    end
                    玩家数据[id].道具.数据[self.临时id].初始金额 = 玩家数据[id].道具.数据[self.临时id].初始金额 - 总价格
                end
            end
        end
          道具格子=玩家数据[id].角色:取道具格子()
          if 道具格子==0 then
            常规提示(id,"您的道具栏物品已经满啦")
            return 0
          end
          道具编号=玩家数据[id].道具:取新编号()
          玩家数据[id].道具.数据[道具编号]=复制物品(商品道具)
          玩家数据[id].道具.数据[道具编号].数量=商品数量
          玩家数据[id].角色.数据.道具[道具格子]=道具编号
          常规提示(id,"您花费"..总价格.."两帮派银子购买了"..商品名称.."*"..商品数量)
          道具刷新(id)
          return 0
        -- self:商品参数补充(玩家数据[id].道具.数据[道具编号].名称,道具编号,id)
    elseif 玩家数据[id].角色:扣除银子(总价格,0,0,"购买系统商店商品["..商品名称.."]数量:"..商品数量) and 商品道具.总类 ~= "跑商商品" then
      if 商品名称=="高级魔兽要诀" then
        玩家数据[id].道具:给予道具(id,"高级魔兽要诀")
        广播消息({内容=format("#G听说有人在傲来国的云游道人处花重金购买了#Y%s#24",商品名称),频道="cw"})
      elseif 商品名称=="灵饰指南书" then
        玩家数据[id].道具:给予道具(id,"灵饰指南书",{6,8,10,12,14})
        广播消息({内容=format("#G听说有人在傲来国的云游道人处花重金购买了#Y%s#24",商品名称),频道="cw"})
      elseif 商品名称=="元灵晶石" then
        玩家数据[id].道具:给予道具(id,"元灵晶石",{6,8,10,12,14})
        广播消息({内容=format("#G听说有人在傲来国的云游道人处花重金购买了#Y%s#24",商品名称),频道="cw"})
      elseif 商品名称=="随机百炼精铁" then
        玩家数据[id].道具:给予书铁(id,{10,13},"精铁")
        广播消息({内容=format("#G听说有人在傲来国的云游道人处花重金购买了#Y%s#24","百炼精铁"),频道="cw"})
      elseif 商品名称=="随机制造指南书" then
        玩家数据[id].道具:给予书铁(id,{10,13},"指南书")
        广播消息({内容=format("#G听说有人在傲来国的云游道人处花重金购买了#Y%s#24","制造指南书"),频道="cw"})
      elseif 释怀定制 and (商品名称=="珍露酒" or 商品名称=="虎骨酒" or 商品名称=="醉生梦死" or 商品名称=="蛇胆酒" or 商品名称=="百味酒" or 商品名称=="梅花酒" or 商品名称=="长寿面" or 商品名称=="豆斋果" or 商品名称=="金香玉" or 商品名称=="小还丹" or 商品名称=="千年保心丹" or 商品名称=="十香返生丸" or 商品名称=="风水混元丹" or 商品名称=="定神香" or 商品名称=="蛇蝎美人" or 商品名称=="九转回魂丹" or 商品名称=="五龙丹") then
        local 临时品质=f函数.读配置(程序目录.."Shopping.ini","宝象药店品质",商品名称)+0
        玩家数据[id].道具:给予道具(id,商品名称,1,临时品质)
      else
        道具编号=玩家数据[id].道具:取新编号()
        玩家数据[id].道具.数据[道具编号]=复制物品(商品道具)
        玩家数据[id].道具.数据[道具编号].数量=商品数量
        玩家数据[id].角色.数据.道具[道具格子]=道具编号
        self:商品参数补充(玩家数据[id].道具.数据[道具编号].名称,道具编号,id)
      end
      常规提示(id,"您花费"..总价格.."两银子购买了"..商品名称.."*"..商品数量)
      道具刷新(id)
      return 0
    else
      --重新计算可购买数量
      总价格=0
      for n=1,商品数量 do
        if (成功数量+1)*商品单价>取银子(id) then
          成功数量=成功数量+1
        else
          if 成功数量<=0 then
            常规提示(id,"您身上的银子似乎不够哟")
            return 0
          else
            总价格=成功数量*商品单价
            if 玩家数据[id].角色:扣除银子(总价格,0,0,"购买系统商店商品["..商品名称.."]数量:"..成功数量) then
              if 商品名称=="高级魔兽要诀" then
                玩家数据[id].道具:给予道具(id,"高级魔兽要诀")
                广播消息({内容=format("#G听说有人在傲来国的云游道人处花重金购买了#Y%s#24",商品名称),频道="cw"})
              elseif 商品名称=="灵饰指南书" then
                玩家数据[id].道具:给予道具(id,"灵饰指南书",{6,8,10})
                广播消息({内容=format("#G听说有人在傲来国的云游道人处花重金购买了#Y%s#24",商品名称),频道="cw"})
              elseif 商品名称=="元灵晶石" then
                玩家数据[id].道具:给予道具(id,"元灵晶石",{6,8,10})
                广播消息({内容=format("#G听说有人在傲来国的云游道人处花重金购买了#Y%s#24",商品名称),频道="cw"})
              elseif 商品名称=="随机百炼精铁" then
                玩家数据[id].道具:给予书铁(id,{10,13},"精铁")
                广播消息({内容=format("#G听说有人在傲来国的云游道人处花重金购买了#Y%s#24","百炼精铁"),频道="cw"})
              elseif 商品名称=="随机制造指南书" then
                玩家数据[id].道具:给予书铁(id,{10,13},"指南书")
                广播消息({内容=format("#G听说有人在傲来国的云游道人处花重金购买了#Y%s#24","制造指南书"),频道="cw"})
              else
                道具编号=玩家数据[id].道具:取新编号()
                玩家数据[id].道具.数据[道具编号]=复制物品(商品道具)
                玩家数据[id].道具.数据[道具编号].数量=成功数量
                玩家数据[id].角色.数据.道具[道具格子]=道具编号
                self:商品参数补充(玩家数据[id].道具.数据[道具编号].名称,道具编号,id)
              end
              常规提示(id,"您花费"..总价格.."两银子购买了"..商品名称.."*"..成功数量)
              道具刷新(id)
              return 0
            else
              常规提示(id,"您身上的银子似乎不够哟")
              return 0
            end
          end
        end
      end
    end
  end
  for n=1,商品数量 do
    道具格子=玩家数据[id].角色:取道具格子()
    if 道具格子==0 then
      常规提示(id,"您的道具栏物品已经满啦")
      return 0
    end
    if 玩家数据[id].角色:扣除银子(商品单价,0,0,"购买系统商店商品["..商品名称.."]") then
      if 商品名称=="高级魔兽要诀" then
        玩家数据[id].道具:给予道具(id,"高级魔兽要诀")
        广播消息({内容=format("#G听说有人在傲来国的云游道人处花重金购买了#Y%s#24",商品名称),频道="cw"})
      elseif 商品名称=="灵饰指南书" then
        玩家数据[id].道具:给予道具(id,"灵饰指南书",{6,8,10,12,14})
        广播消息({内容=format("#G听说有人在傲来国的云游道人处花重金购买了#Y%s#24",商品名称),频道="cw"})
      elseif 商品名称=="元灵晶石" then
        玩家数据[id].道具:给予道具(id,"元灵晶石",{6,8,10,12,14})
        广播消息({内容=format("#G听说有人在傲来国的云游道人处花重金购买了#Y%s#24",商品名称),频道="cw"})
      elseif 商品名称=="魔兽要诀" then
        玩家数据[id].道具:给予道具(id,"魔兽要诀")
        广播消息({内容=format("#G听说有人在傲来国的云游道人处花重金购买了#Y%s#24",商品名称),频道="cw"})
      elseif 商品名称=="随机百炼精铁" then
        玩家数据[id].道具:给予书铁(id,{10,13},"精铁")
        广播消息({内容=format("#G听说有人在傲来国的云游道人处花重金购买了#Y%s#24","百炼精铁"),频道="cw"})
      elseif 商品名称=="随机制造指南书" then
        玩家数据[id].道具:给予书铁(id,{10,13},"指南书")
        广播消息({内容=format("#G听说有人在傲来国的云游道人处花重金购买了#Y%s#24","制造指南书"),频道="cw"})
      elseif 释怀定制 and (商品名称=="珍露酒" or 商品名称=="虎骨酒" or 商品名称=="醉生梦死" or 商品名称=="蛇胆酒" or 商品名称=="百味酒" or 商品名称=="梅花酒" or 商品名称=="长寿面" or 商品名称=="豆斋果" or 商品名称=="金香玉" or 商品名称=="小还丹" or 商品名称=="千年保心丹" or 商品名称=="十香返生丸" or 商品名称=="风水混元丹" or 商品名称=="定神香" or 商品名称=="蛇蝎美人" or 商品名称=="九转回魂丹" or 商品名称=="五龙丹") then
        local 临时品质=f函数.读配置(程序目录.."Shopping.ini","宝象药店品质",商品名称)+0
        玩家数据[id].道具:给予道具(id,商品名称,1,临时品质)
      else
        道具编号=玩家数据[id].道具:取新编号()
        玩家数据[id].道具.数据[道具编号]=复制物品(商品道具)
        玩家数据[id].角色.数据.道具[道具格子]=道具编号
        self:商品参数补充(玩家数据[id].道具.数据[道具编号].名称,道具编号,id)
      end
      成功数量=成功数量+1
    else
      常规提示(id,"您身上的银子似乎不够哟")
      if 成功数量>0 then
        常规提示(id,"您花费"..(商品单价*成功数量).."两银子购买了"..商品名称.."*"..成功数量)
        return 0
      end
      return 0
    end
  end
  常规提示(id,"您花费"..(商品单价*成功数量).."两银子购买了"..商品名称.."*"..成功数量)
  道具刷新(id)
end

function 场景类_对话商业栏:商品参数补充(名称,道具id,id)
  玩家数据[id].道具.数据[道具id].识别码=id.."_"..os.time().."_"..取随机数(1000,9999999).."_"..随机序列
  随机序列=随机序列+1
  if 玩家数据[id].道具.数据[道具id].总类==1 then
    玩家数据[id].道具.数据[道具id].子类=20
  elseif 玩家数据[id].道具.数据[道具id].名称=="秘制红罗羹" or 玩家数据[id].道具.数据[道具id].名称=="秘制绿萝羹" then
    玩家数据[id].道具.数据[道具id].品质=100000
  end
end

function 场景类_对话商业栏:治疗召唤兽气血(连接id,id)
  local 气血=玩家数据[id].召唤兽:取气血差()
  local 魔法=玩家数据[id].召唤兽:取魔法差()
  local 银子=math.floor(气血*0.5)+魔法
  if 玩家数据[id].角色.数据.银子<银子 then
    发送数据(连接id,1501,{名称="超级巫医",模型="男人_巫医",对话=format("本次需要收费%s两银子，你没那么多的银子哟#24",银子)})
    return
  end
  玩家数据[id].角色:扣除银子(银子,0,0,"治疗召唤兽气血魔法",1)
  for n=1,#玩家数据[id].召唤兽.数据 do
    玩家数据[id].召唤兽.数据[n].气血=玩家数据[id].召唤兽.数据[n].最大气血
    玩家数据[id].召唤兽.数据[n].魔法=玩家数据[id].召唤兽.数据[n].最大魔法
  end
  发送数据(连接id,1501,{名称="超级巫医",模型="男人_巫医",对话=format("收您%s两银子，已将您的所有召唤兽气血和魔法全部恢复至最佳状态。",银子)})
end

function 场景类_对话商业栏:治疗召唤兽忠诚(连接id,id)
  local 忠诚=玩家数据[id].召唤兽:取忠诚差()
  local 银子=忠诚*100
  if 玩家数据[id].角色.数据.银子<银子 then
    发送数据(连接id,1501,{名称="超级巫医",模型="男人_巫医",对话=format("本次需要收费%s两银子，你没那么多的银子哟#24",银子)})
    return
  end
  玩家数据[id].角色:扣除银子(银子,0,0,"治疗召唤兽忠诚",1)
  for n=1,#玩家数据[id].召唤兽.数据 do
    玩家数据[id].召唤兽.数据[n].忠诚=100
  end
  发送数据(连接id,1501,{名称="超级巫医",模型="男人_巫医",对话=format("收您%s两银子，已将您的所有召唤兽忠诚恢复至最佳状态。",银子)})
end

function 场景类_对话商业栏:治疗召唤兽全体(连接id,id)
  local 忠诚=玩家数据[id].召唤兽:取忠诚差()
  local 银子=忠诚*100
  local 气血=玩家数据[id].召唤兽:取气血差()
  local 魔法=玩家数据[id].召唤兽:取魔法差()
  银子=银子+math.floor(气血*0.5)+魔法
  if 玩家数据[id].角色.数据.银子<银子 then
    发送数据(连接id,1501,{名称="超级巫医",模型="男人_巫医",对话=format("本次需要收费%s两银子，你没那么多的银子哟#24",银子)})
    return
  end
  玩家数据[id].角色:扣除银子(银子,0,0,"治疗召唤兽忠诚、气血、魔法",1)
  for n=1,#玩家数据[id].召唤兽.数据 do
    玩家数据[id].召唤兽.数据[n].气血=玩家数据[id].召唤兽.数据[n].最大气血
    玩家数据[id].召唤兽.数据[n].魔法=玩家数据[id].召唤兽.数据[n].最大魔法
    玩家数据[id].召唤兽.数据[n].忠诚=100
  end
  发送数据(连接id,1501,{名称="超级巫医",模型="男人_巫医",对话=format("收您%s两银子，已将您的所有召唤兽气血、魔法、忠诚恢复至最佳状态。",银子)})
end
function 场景类_对话商业栏:更新(dt)end
function 场景类_对话商业栏:显示(x,y)end

return 场景类_对话商业栏